﻿/*********************************************************
 * 开发人员：小兵
 * 创建时间：2012-10-18 14:49:17
 * 描述说明：
 * 
 * 更改历史：
 * 
 * *******************************************************/
namespace Mozlite.WebUI.Ribbon
{
    using System;
    using System.Web;
    using System.Data;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Mozlite.Components;
    using System.Xml;

    /// <summary>
    /// 分组类。
    /// </summary>
    public class Group
    {
        /// <summary>
        /// 初始化类<see cref="Group"/>。
        /// </summary>
        /// <param name="node">XML节点实例对象。</param>
        /// <param name="parent">父用户组。</param>
        public Group(XmlNode node, RoleLevel parent)
        {
            Menu = new List<MenuItem>();
            RoleLevel = node["role"].GetInnerText().ToEnum<RoleLevel>(parent);
            foreach(XmlNode child in node) {
                if(child.NodeType == XmlNodeType.Comment)
                    continue;
                switch(child.Name) { 
                    case "name":
                        GroupName = child.GetInnerText();
                        IsLocalized = child.GetAttribute("isLocal").ToBoolean(true);
                        break;
                    case "item":
                        Menu.Add(new MenuItem(child, RoleLevel));
                        break;
                    case "submenu":
                        Menu.Add(new MenuItem(child, RoleLevel, true));
                        break;
                }
            }
        }
        /// <summary>
        /// 分组名称。
        /// </summary>
        public string GroupName { get; set; }
        /// <summary>
        /// 获取或设置是否本地资源化。
        /// </summary>
        /// <remarks>
        /// 如果设置为<c>true</c>，则将通过GroupName调用资源包的数据。
        /// </remarks>
        public bool IsLocalized { get; set; }
        /// <summary>
        /// 用户组。
        /// </summary>
        public RoleLevel RoleLevel { get; set; }
        /// <summary>
        /// 获取或设置菜单列表。
        /// </summary>
        public List<MenuItem> Menu { get; private set; }
    }
}
